#define _CRT_SECURE_NO_WARNINGS  1

#include "mymap.h"
#include "myset.h"
//void test_set()
//{
//	MySet::set<int> st;
//	st.insert(1);
//	st.insert(6);
//	st.insert(3);
//	st.insert(8);
//	MySet::set<int>::iterator it = st.begin();
//	while (it != st.end())
//	{
//		cout << *it << " ";
//		++it;
//	}
//	cout << endl;
//}
//void test_map()
//{
//	MyMap::map<int, int> mp;
//	mp.insert({ 4,40 });
//	mp.insert({ 2,20 });
//	mp.insert({ 1,10 });
//	mp.insert({ 3,30 });
//	MyMap::map<int, int>::iterator it = mp.begin();
//	while (it != mp.end())
//	{
//		cout << it->first << " " << it->second << endl;
//		++it;
//	}
//	cout << endl;
//}
//void test_set()
//{
//	MySet::set<int> st;
//	st.insert(1);
//	st.insert(6);
//	st.insert(3);
//	st.insert(8);
//	MySet::set<int>::iterator it = st.begin();
//	while (it != st.end())
//	{
//		cout << *it << " ";
//		++it;
//	}
//	cout << endl;
//
//	st.erase(3);
//	it = st.begin();
//	while (it != st.end())
//	{
//		cout << *it << " ";
//		++it;
//	}
//	cout << endl;
//
//	st.erase(8);
//	it = st.begin();
//	while (it != st.end())
//	{
//		cout << *it << " ";
//		++it;
//	}
//	cout << endl;
//}
//void test_map()
//{
//	MyMap::map<string, string> dict;
//	dict.insert({ "sort", "排序" });
//	dict.insert({ "left", "左边" });
//	dict.insert({ "right", "右边" });
//	dict["left"] = "左边，剩余";
//	dict["insert"] = "插入";
//	dict["string"];
//	MyMap::map<string, string>::iterator it = dict.begin();
//	while (it != dict.end())
//	{
//		it->second += 's';
//		cout << it->first << ":" << it->second << endl;
//		++it;
//	}
//	cout << endl;
//
//	dict.erase("insert");
//	auto it1 = dict.begin();
//	while (it1 != dict.end())
//	{
//		cout << it1->first << ":" << it1->second << endl;
//		++it1;
//	}
//	cout << endl;
//
//	dict.erase("string");
//	it1 = dict.begin();
//	while (it1 != dict.end())
//	{
//		cout << it1->first << ":" << it1->second << endl;
//		++it1;
//	}
//	cout << endl;
//}

void test_set()
{
	MySet::set<int> st = { 1,2,3 };
	st.insert(1);
	st.insert(6);
	st.insert(3);
	st.insert(8);
	MySet::set<int>::iterator it = st.begin();
	while (it != st.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;

	//MySet::set<int> st1 = st;
	MySet::set<int> st1(st.begin(), st.end());
	st1.insert(10);
	st1.insert(20);
	it = st1.begin();
	while (it != st1.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;

	st = st1;
	it = st.begin();
	while (it != st.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;
}
void test_map()
{
	MyMap::map<string, string> dict = { {"map","pair"},{"set","key"} };
	dict.insert({ "sort", "排序" });
	dict.insert({ "left", "左边" });
	dict.insert({ "right", "右边" });
	dict["left"] = "左边，剩余";
	dict["insert"] = "插入";
	dict["string"];
	MyMap::map<string, string>::iterator it = dict.begin();
	while (it != dict.end())
	{
		cout << it->first << ":" << it->second << endl;
		++it;
	}
	cout << endl;

	MyMap::map<string, string> dict1 = dict;
	dict1.erase("insert");
	it = dict1.begin();
	while (it != dict1.end())
	{
		cout << it->first << ":" << it->second << endl;
		++it;
	}
	cout << endl;

	dict = dict1;
	it = dict.begin();
	while (it != dict.end())
	{
		cout << it->first << ":" << it->second << endl;
		++it;
	}
	cout << endl;
}
int main()
{
	//test_set();
	test_map();
	/*test_set();
	test_map();*/
	/*MySet::test_set();
	cout << endl;
	MyMap::test_map();*/
	//MyMap::test_map();
	return 0;
}
